AI 模型沒有「非同步(Async)」跟「環境隔離」的常識。它在幫你補 E2E (End-to-End) 測試或整合測試的時候,最常見的招式就是 time.sleep(1) (好吧不只AI,菜鳥也最愛)
你以為等個一秒鐘,資料庫就一定會寫完,畫面就一定會 Render 出來。結果到了 CI 伺服器上,遇到 CPU 負載飆高的時候,一秒鐘根本不夠用,測試直接報 Timeout。或者,AI 寫的測試去依賴了某個外部的第三方 API,只要網路抖一下, CI 就死給你看。
當 CI pipeline 開始出現隨機紅燈時,破窗效應就產生了。團隊會開始覺得「反正那個 test 本來就時好時壞」,當真正的 Bug 混進去讓測試亮紅燈時,大家也會以為「只是 CI 又在 flacky」,然後閉著眼睛按下強制 Merge。這條品質防線就徹底沒用了。
面對 AI 帶來的 Flaky Test 災難,我們必須展現鐵腕手段。任何不穩定的測試,都是產線上的毒瘤,必須立刻隔離切除。
# pyproject.toml
[tool.ruff]
# 產線防呆:抓出 AI 亂寫的 time.sleep
# 可以透過設定自訂的 flake8 規則或是 Review 機器人
# 看到 time.sleep 直接噴 Error,強迫改用 WebDriverWait 或 tenacity 重試機制